package com.example.demo.utils;

import io.jsonwebtoken.*;

import java.util.Date;
import java.util.UUID;

/**
 * 作者：邓利
 * 时间：2024-06-05
 * JWT工具类
 **/
public class JwtUtil {
    private static long time = 1000 * 15;
    private static String sign = "admin";
    public static String createToken(){
        //创建一个JwtBuilder对象
        JwtBuilder jwtBuilder = Jwts.builder();
        //jwtToken->abc.def.xyz
        String jwtToken = jwtBuilder
                //header头部
                .setHeaderParam("typ", "JWT")
                .setHeaderParam("alg", "HS256")
                //payload负载
                .claim("username", "zhangsan")
                .claim("roles", "admin")
                .setSubject("admin-test")
                .setExpiration(new Date(System.currentTimeMillis() + time))//Token过期时间
                .setId(UUID.randomUUID().toString()) //id字段
                .signWith(SignatureAlgorithm.HS256, sign)//设置加密算法和签名
                //使用."连接成一个完整的字符串"
                .compact();
        return jwtToken;
    }
    /**
     * 封装验难token是否过期的方法
     */
    public static boolean checkToken(String token){
        if (token.equals("") || token == null){
            return false;//
        }
        try {
            //解析token
            Jws<Claims> claimsJws = Jwts.parser().setSigningKey(sign).parseClaimsJws(token);

        }catch (Exception e){
            return false;
        }
        return true;
    }
}
